#ifndef MUSIC_H
#define MUSIC_H

#include "widget_class.h"  // 您的基类
#include "music_json.h"    // 网络请求类
#include "button.h"        // 自定义按钮类

#include <QLabel>
#include <QPushButton>
#include <QProgressBar>
#include <QGridLayout>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QTimer>
#include <QMap>

class music : public Widget_class
{
    Q_OBJECT

public:
    explicit music(QWidget *parent = nullptr);
    ~music();

    void handle_search(QString song);  // 搜索并播放歌曲

private slots:
    void onPrevButtonClicked();
    void onPlayButtonClicked();
    void onNextButtonClicked();
    void onDataReceived(QList<int> positions, QStringList lyrics);
    void updatePlayback();
    void updateLyricsDisplay(int currentTime);
    void onMediaStateChanged(QMediaPlayer::State state);  // 媒体状态变化

    void onDurationChanged(qint64 duration);
private:
    void setupUI();
    void setupConnections();

    // 界面组件
    QLabel *iconLabel;
    QLabel *lyricsLabel;
    QProgressBar *progressBar;
    QPushButton *prevButton;
    QPushButton *playButton;  // 使用自定义Button类
    QPushButton *nextButton;

    // 播放控制
    music_json *network;
    QMediaPlayer *mediaPlayer;
    QMediaPlaylist *musiclist;
    QTimer *playTimer;

    // 播放状态
    bool isPlaying;           // 播放状态标志
    int currentPosition;      // 当前播放位置（毫秒）
    int totalDuration;        // 总时长（毫秒）
    int currentLyricIndex;    // 当前显示的歌词索引

    // 歌词数据
    QList<int> m_positions;   // 存储台词出现的时间点（毫秒）
    QStringList m_lyrics;     // 存储所有歌词

    // 歌曲映射
    QMap<QString, QString> songMap;

signals:
    void searchRequested(QString url);
};
#endif // MUSIC_H
